{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:54:19.924508Z",
     "start_time": "2021-10-10T08:54:19.641673Z"
    }
   },
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.simplefilter('ignore')\n",
    "\n",
    "import os\n",
    "import re\n",
    "import glob\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "pd.set_option('max_rows', 200)\n",
    "pd.set_option('max_colwidth', 400)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:54:24.408748Z",
     "start_time": "2021-10-10T08:54:24.212147Z"
    }
   },
   "outputs": [],
   "source": [
    "movie_dict = {\n",
    "    '1171': '芳华',\n",
    "    '1460': '风中有朵雨做的云',\n",
    "    '2369': '日照重庆', \n",
    "    '2388': '超时空同居',\n",
    "    '2721': '嫌疑人X的献身',\n",
    "    '2930': '滚蛋吧肿瘤君',\n",
    "    '2996': '集结号',\n",
    "    '32504': '唐人街探案',\n",
    "    '32505': '湄公河行动',\n",
    "    '32795': '西虹市首富',\n",
    "    '32798': '流浪地球',\n",
    "    '32812': '一出好戏',\n",
    "    '32845': '解救吾先生',\n",
    "    '32899': '未知电影',\n",
    "    '34121': '寻梦环游记',\n",
    "    '34126': '那些年我们一起追的女孩',\n",
    "    '34135': '霸王别姬',\n",
    "    '34162': '狗十三',\n",
    "    '34173': '红海行动',\n",
    "    '34311': '哪吒之魔童降世',\n",
    "    '34313': '卧虎藏龙',\n",
    "    '34314': '寄生虫',\n",
    "    '34527': '金陵十三钗',\n",
    "    '34842': '绿皮书',\n",
    "    '34899': '东京物语',\n",
    "    '34911': '中国合伙人',\n",
    "    '34913': '妖猫传',\n",
    "    '34940': '天才枪手',\n",
    "    '34945': '战狼',\n",
    "    '34946': '熔炉',\n",
    "    '34949': '紧急迫降',\n",
    "    '34170': '中国机长',\n",
    "    '34526': '悲伤逆流成河',\n",
    "    '34893': '暴裂无声',\n",
    "    '34896': '楚门的世界',\n",
    "    '34898': '低俗小说',\n",
    "    '34906': '追凶者也',\n",
    "    '34907': '志明与春娇',\n",
    "    '34909': '云水谣',\n",
    "    '34914': '新喜剧之王',\n",
    "    '1597': '泰囧',\n",
    "    '2373': '亲爱的',\n",
    "    '2719': '初恋这件小事',\n",
    "    '2722': '无名之辈',\n",
    "    '2731': '夏洛特烦恼',\n",
    "    '3002': '疯狂的外星人',\n",
    "    '3133': '扫毒',\n",
    "    '34071': '烈日灼心',\n",
    "    '34122': '我不是药神'\n",
    "}\n",
    "\n",
    "train_character_mappings = {\n",
    "    '战狼': {\n",
    "        'q2': '冷锋',\n",
    "        'i3': '军官',\n",
    "        'd3': '首长',\n",
    "        'c3': '武吉',\n",
    "        'j3': '警员',\n",
    "        's1': '女监察员',\n",
    "        't2': '老石',\n",
    "        'u2': '队长',\n",
    "        'k3': '教官',\n",
    "        'g3': '人质',\n",
    "        'l1': '狙击手',\n",
    "        'c1': '龙小云',\n",
    "        'w2': '敏登',\n",
    "        'g1': '雇佣兵',\n",
    "        'z2': '邵兵',\n",
    "        'x2': '俞飞',\n",
    "        'm3': '部下',\n",
    "        'f3': '队员',\n",
    "        'y2': '三八',\n",
    "        'e3': '邵队',\n",
    "        'm1': '二愣子',\n",
    "        's2': '老猫',\n",
    "        'w1': '男监察员',\n",
    "        'l3': '察员',\n",
    "        'r2': '小云'\n",
    "    },\n",
    "    '紧急迫降': {\n",
    "        'r1': '马依俐',\n",
    "        'x2': '舒骏',\n",
    "        'n1': '季兰田',\n",
    "        'b1': '李嘉棠', \n",
    "        'c1': '丘叶华',\n",
    "        'g1': '周书记',\n",
    "        'k1': '吴市长',\n",
    "        'c3': '市长',\n",
    "        'm1': '葛宏增',\n",
    "        'j1': '何文滔',\n",
    "        'w1': '章丙兆',\n",
    "        'z1': '工作人员',\n",
    "        'y1': '麦杰里',\n",
    "        'u1': '赵雅旋',\n",
    "        'w2': '刘远',\n",
    "        'r3': '人员',\n",
    "        's1': '指挥员',\n",
    "        'p3': '机长',\n",
    "        'a2': '马依俐',\n",
    "        'v1': '乘务长',\n",
    "        'a3': '空姐',\n",
    "        'g3': '茜茜',\n",
    "        's2': '魏朝成',\n",
    "        'f1': '图拉其',\n",
    "        'd3': '小飞',\n",
    "        'h3': '孟凡',\n",
    "        'h1': '副驾驶', \n",
    "        'z2': '驾驶', \n",
    "        'l3': '老头', \n",
    "        'i3': '少妇', \n",
    "        't3': '老太', \n",
    "        't2': '马依俐', \n",
    "        'j4': '吴为'\n",
    "    },\n",
    "    '嫌疑人X的献身': {\n",
    "        'i2': '陈靖',\n",
    "        'g2': '石泓',\n",
    "        'f1': '陈晓欣',\n",
    "        'h2': '唐川',\n",
    "        'j2': '罗淼',\n",
    "        'i1': '刑警',\n",
    "        's2': '法医',\n",
    "        'l2': '傅坚',\n",
    "        'q2': '警察',\n",
    "        'l1': '一个警察',\n",
    "        'j1': '那警察',\n",
    "        'r2': '店员',\n",
    "        'm2': '坤哥',\n",
    "        'k1': '那个警察',\n",
    "        'k2': '晓欣',\n",
    "        'n2': '队长'\n",
    "    },\n",
    "    '一出好戏': {\n",
    "        'i2': '小兴',\n",
    "        'h2': '马进',\n",
    "        't2': '员工',\n",
    "        'g1': '潘主任',\n",
    "        'i1': '史教授',\n",
    "        'd1': '总',\n",
    "        'j1': '赵天龙',\n",
    "        'k2': '姗姗',\n",
    "        'c1': '王根基',\n",
    "        'p2': '男人',\n",
    "        'm2': '齐姐',\n",
    "        'q2': '妇女',\n",
    "        'o2': '天龙',\n",
    "        'm1': '那男子',\n",
    "        's2': '杨洪',\n",
    "        'r2': '男子'\n",
    "    },\n",
    "    '解救吾先生':{\n",
    "        'o2': '张华',\n",
    "        'b1': '吾先生',\n",
    "        'y2': '程总',\n",
    "        'p2': '曹刚',\n",
    "        'r2': '邢峰',\n",
    "        'j1': '张国正',\n",
    "        'w2': '刑警',\n",
    "        'f3': '翻译',\n",
    "        'p1': '李杰辉',\n",
    "        's2': '小窦',\n",
    "        't2': '小弟',\n",
    "        'q2': '刑峰',\n",
    "        'x2': '伟哥',\n",
    "        'u2': '仓哥',\n",
    "        'q1': '孔老大',\n",
    "        'm1': '苏先生',\n",
    "        'z2': '警察',\n",
    "        'c3': '超子',\n",
    "        'd3': '妻子',\n",
    "        'e3': '陈晨',\n",
    "        'v1': '那绑匪',\n",
    "        'g3': '绑匪',\n",
    "        'b3': '老大'\n",
    "    },\n",
    "    '绿皮书':{\n",
    "        'v2': '利普',\n",
    "        'j1': '罗斯古德',\n",
    "        'u1': '卡迈恩',\n",
    "        't3': '贡巴',\n",
    "        'd1': '德洛丽丝',\n",
    "        'z2': '强尼',\n",
    "        'i3': '鲁迪',\n",
    "        'm3': '弗兰',\n",
    "        'v3': '托尼',\n",
    "        'f3': '老板娘',\n",
    "        'h3': '保利',\n",
    "        'k1': '阿密特',\n",
    "        'w2': '谢利',\n",
    "        'r3': '鲍比',\n",
    "        'p3': '奥基',\n",
    "        'k3': '高管',\n",
    "        'h1': '奥列格',\n",
    "        'u3': '司机',\n",
    "        'm1': '舞台经理',\n",
    "        'c3': '一间背',\n",
    "        'v1': '男人 1',\n",
    "        'n1': '摩根安德',\n",
    "        's1': '服务员',\n",
    "        'y2': '警察 1',\n",
    "        'x1': '多米尼克',\n",
    "        'a3': '欣德',\n",
    "        's3': '查理',\n",
    "        'q3': '尼克',\n",
    "        'g3': '德森'\n",
    "    },\n",
    "    '金陵十三钗': {\n",
    "        'd1': '孟书娟',\n",
    "        'g1': '女学生',\n",
    "        'o2': '约翰',\n",
    "        'f1': '日本兵',\n",
    "        'i1': '李教官',\n",
    "        'c1': '陈乔治',\n",
    "        'c3': '女生甲',\n",
    "        'w2': '红菱',\n",
    "        'p2': '玉墨',\n",
    "        'h1': '女人们',\n",
    "        'b3': '怡春',\n",
    "        'u1': '女人乙',\n",
    "        'a3': '豆蔻',\n",
    "        'z2': '女孩',\n",
    "        'm1': '胖春',\n",
    "        't1': '朝仓中尉',\n",
    "        'j1': '孟先生',\n",
    "        'x2': '大佐',\n",
    "        'h3': '浦生',\n",
    "        'e3': '泰瑞',\n",
    "        'r1': '加藤中尉',\n",
    "        't2': '学生',\n",
    "        'r2': '书娟',\n",
    "        'q2': '乔治',\n",
    "        'y2': '春花'\n",
    "    },\n",
    "    '滚蛋吧肿瘤君': {\n",
    "        'm2': '熊顿',\n",
    "        'd3': '新娘',\n",
    "        'u2': '男友',\n",
    "        'x2': '老板',\n",
    "        'q2': '艾米',\n",
    "        'o2': '老郑',\n",
    "        'z2': '美女',\n",
    "        'p2': '小夏',\n",
    "        't2': '熊妈',\n",
    "        'w2': '熊爸',\n",
    "        'n2': '医生',\n",
    "        'v2': '护士',\n",
    "        'r1': '小男孩',\n",
    "        'n1': '爸爸',\n",
    "        's2': '毛豆',\n",
    "        'r2': '夏梦',\n",
    "        'a3': '最后',\n",
    "        's1': 'Waiter',\n",
    "        'o1': '劈腿女',\n",
    "        'b3': '男孩',\n",
    "    },\n",
    "    '超时空同居': {\n",
    "        'l2': '小焦',\n",
    "        'p1': '中介小马',\n",
    "        'y2': '职员',\n",
    "        'l1': '相亲男',\n",
    "        'b3': '李总',\n",
    "        'i1': '土豆大亨',\n",
    "        'm2': '陆鸣',\n",
    "        'c1': '赵俊以',\n",
    "        'g1': '谷琪祥',\n",
    "        'x2': '助理',\n",
    "        'r2': '博士',\n",
    "        't2': '店长',\n",
    "        'p2': '小雅',\n",
    "        'k1': '酒吧服务员',\n",
    "        'a3': '保安',\n",
    "        'd1': '陆石屹',\n",
    "        's2': '大亨',\n",
    "        'c3': '阿姨',\n",
    "        'u2': '务员',\n",
    "        'w2': '老公',\n",
    "        'o2': '石屹',\n",
    "        'n2': '俊以'\n",
    "    },\n",
    "    '那些年我们一起追的女孩': {\n",
    "        'o2': '柯腾', \n",
    "        'q2': '阿和', \n",
    "        's2': '勃起', \n",
    "        't2': '老曹', \n",
    "        'v2': '教官', \n",
    "        'c1': '沈佳宜', \n",
    "        'r2': '弯弯', \n",
    "        'u2': '该边', \n",
    "        'y2': '赖导', \n",
    "        'i1': '老师',\n",
    "        'c3': '邻居', \n",
    "        'v1': '柯景腾', \n",
    "        'q1': '室友义智', \n",
    "        'a3': '孝纶',\n",
    "        'w2': '建伟',\n",
    "        'z2': '新郎',\n",
    "        'p2': '佳宜',\n",
    "        'b3': '室友义智'\n",
    "    },\n",
    "    '湄公河行动': {\n",
    "        'r2': '高刚',\n",
    "        'g3': '部长',\n",
    "        'i1': '郁局长',\n",
    "        'g1': '宋比塔',\n",
    "        'c1': '方新武',\n",
    "        'j3': '瓦拉',\n",
    "        't2': '糯卡',\n",
    "        't3': '拿突',\n",
    "        'u2': '大师',\n",
    "        'h3': '队员',\n",
    "        'b3': '二郎',\n",
    "        'x2': '哪吒',\n",
    "        's1': '快译通',\n",
    "        'z2': '冰冰',\n",
    "        'd3': '翁煞',\n",
    "        'k3': '手下',\n",
    "        'm1': '野牛队',\n",
    "        'a3': '皮尔',\n",
    "        'u1': '沙先生',\n",
    "        'l3': '警察',\n",
    "        'v2': '占蓬',\n",
    "        'm3': '女儿',\n",
    "        'e3': '桑吉',\n",
    "        'f3': '依达',\n",
    "        'n3': '船员',\n",
    "        'w2': '比塔',\n",
    "        'p3': '真人',\n",
    "        'i3': '译通',\n",
    "        's2': '新武',\n",
    "        'y2': '局长'\n",
    "    },\n",
    "    '中国合伙人': {\n",
    "        'a1': '成东青',\n",
    "        'b1': '孟晓骏',\n",
    "        'h2': '王阳',\n",
    "        'j2': '良琴',\n",
    "        'l2': '波诺',\n",
    "        'q2': '女生',\n",
    "        'o2': '记者',\n",
    "        'i2': '苏梅',\n",
    "        'k2': '男生',\n",
    "        'p2': '张曦',\n",
    "        'n2': '许文',\n",
    "        'i1': '周知庸',\n",
    "        'g2': '晓骏'\n",
    "    },\n",
    "    '妖猫传': {\n",
    "        'x2': '春琴',\n",
    "        'w2': '黑猫',\n",
    "        'd1': '陈云樵',\n",
    "        't2': '空海',\n",
    "        'c1': '白乐天',\n",
    "        'p3': '侍卫们',\n",
    "        'r3': '看客',\n",
    "        'r1': '中年男子',\n",
    "        'm1': '金吾卫',\n",
    "        'o3': '妓女',\n",
    "        'i3': '玉莲',\n",
    "        'k3': '丽香',\n",
    "        'y1': '李少监',\n",
    "        'n3': '牡丹',\n",
    "        'u1': '老宫女',\n",
    "        'l3': '白玲',\n",
    "        'c3': '晁衡',\n",
    "        'h3': '皇上',\n",
    "        'z2': '白龙',\n",
    "        'g3': '黄鹤',\n",
    "        'a3': '丹龙',\n",
    "        'j1': '高力士',\n",
    "        'f3': '李白',\n",
    "        'g1': '杨玉环',\n",
    "        'l1': '李隆基',\n",
    "        's3': '瓜翁',\n",
    "        'v2': '云樵',\n",
    "        'm3': '宫女',\n",
    "        'u2': '乐天',\n",
    "        'j3': '男子',\n",
    "        'y2': '玉环'\n",
    "    },\n",
    "    '流浪地球': {\n",
    "        'd1': '韩朵朵',\n",
    "        'l2': '刘启',\n",
    "        'f1': '韩子昂',\n",
    "        'c1': '刘培强',\n",
    "        'l1': '马卡洛',\n",
    "        'h1': 'Tim',\n",
    "        'i1': 'MOSS',\n",
    "        'q1': '防护服',\n",
    "        'r1': 'Moss',\n",
    "        'k1': 'TIM',\n",
    "        'o2': '王磊',\n",
    "        't2': '周倩',\n",
    "        'n1': '何连科',\n",
    "        'w2': '锤子',\n",
    "        'y2': '溜子',\n",
    "        'p1': '外骨骼',\n",
    "        'g1': '李一一',\n",
    "        's1': '联合政府',\n",
    "        'n2': '朵朵',\n",
    "        'm2': '培强'\n",
    "    },\n",
    "    '红海行动': {\n",
    "        'x1': '工作人员',\n",
    "        'a3': '舰长',\n",
    "        'c3': '陆琛',\n",
    "        'r2': '杨锐',\n",
    "        'v2': '佟莉',\n",
    "        'x2': '李懂',\n",
    "        'd3': '罗星',\n",
    "        'u2': '徐宏',\n",
    "        'y2': '石头',\n",
    "        'j3': '政委',\n",
    "        't2': '夏楠',\n",
    "        'h3': '阿布',\n",
    "        'f3': '威廉博士',\n",
    "        'o3': '主编',\n",
    "        'm3': '扎卡',\n",
    "        'o1': '政府军',\n",
    "        'w2': '顾顺',\n",
    "        'q1': '何领事',\n",
    "        'u1': '卢医生',\n",
    "        'b3': '邓梅：',\n",
    "        's2': '叛军',\n",
    "        'l3': '司机',\n",
    "        'i3': '武警',\n",
    "        'z2': '庄羽',\n",
    "        'n3': '人员',\n",
    "        'g3': '领事'\n",
    "    },\n",
    "    '日照重庆': {\n",
    "        'a1': '林权海',\n",
    "        'p2': '老金',\n",
    "        'h1': '李育英',\n",
    "        'u2': '警察',\n",
    "        's1': '中年男人',\n",
    "        'a3': '淑平',\n",
    "        'p1': '配货员',\n",
    "        'x2': '保安',\n",
    "        's2': '玲子',\n",
    "        'y2': '表姐',\n",
    "        't2': '方慧',\n",
    "        'n2': '林波',\n",
    "        'o2': '小雯',\n",
    "        'b3': '医生',\n",
    "        'm2': '强子',\n",
    "        'w2': '男孩',\n",
    "        'v2': '刘成',\n",
    "        'q2': '竹青',\n",
    "        'r2': '育英',\n",
    "        'c3': '男人'\n",
    "    },\n",
    "    '哪吒之魔童降世': {\n",
    "        'd1': '申公豹',\n",
    "        'p1': '混元天尊',\n",
    "        'l2': '李靖',\n",
    "        'q2': '村民们',\n",
    "        'h1': '李管家',\n",
    "        'p2': '龙王',\n",
    "        'i2': '哪吒',\n",
    "        'v2': '兵士',\n",
    "        'm1': '结界兽甲',\n",
    "        'l1': '结界兽乙',\n",
    "        'n2': '阿三',\n",
    "        'n1': '猪头套',\n",
    "        'r1': '太乙真人',\n",
    "        'm2': '海妖',\n",
    "        'r2': '小妹',\n",
    "        'j2': '敖丙',\n",
    "        'w2': '天尊',\n",
    "        'u2': '小孩',\n",
    "        'y2': '真人',\n",
    "        'k2': '公豹'\n",
    "    },\n",
    "    '天才枪手': {\n",
    "        'i2': '小琳',\n",
    "        'e1': '格蕾丝',\n",
    "        'f1': '老师',\n",
    "        'k2': '小巴',\n",
    "        'm1': '小林父亲',\n",
    "        'j2': '班克',\n",
    "        'n2': '校长',\n",
    "        'm2': '小东',\n",
    "        'o2': '考生',\n",
    "        'g1': '考官'\n",
    "    },\n",
    "    '东京物语': {\n",
    "        'm2': '周吉',\n",
    "        't2': '京子',\n",
    "        'n2': '富子',\n",
    "        'y2': '主妇',\n",
    "        'r2': '文子',\n",
    "        'z2': '阿勇',\n",
    "        's2': '阿实',\n",
    "        'q2': '幸一',\n",
    "        'o2': '志家',\n",
    "        'p2': '纪子',\n",
    "        'a3': '木代',\n",
    "        'u2': '库造',\n",
    "        'w2': '服部',\n",
    "        'c3': '米子',\n",
    "        'v2': '沼田',\n",
    "        'b3': '加代',\n",
    "        'x2': '敬三',\n",
    "        's1': '老站务',\n",
    "        'e3': '大夫',\n",
    "        'd3': '务员'\n",
    "    },\n",
    "    '熔炉': {\n",
    "        'b1': '姜仁浩',\n",
    "        'g1': '母亲',\n",
    "        'c1': '徐友真',\n",
    "        'r1': '金教授',\n",
    "        'm2': '校长',\n",
    "        'i1': '行政室长',\n",
    "        'e1': '朴宝贤',\n",
    "        'k1': '张刑警',\n",
    "        'q1': '工作人员',\n",
    "        'f1': '黄律师',\n",
    "        'u2': '被告',\n",
    "        'p2': '法官',\n",
    "        'n1': '母亲',\n",
    "        'l1': '吴正植',\n",
    "        'r2': '原告',\n",
    "        'w2': '永勋',\n",
    "        'j3': '慈爱',\n",
    "        's2': '刑警',\n",
    "        'a2': '金妍斗',\n",
    "        'z1': '成宥利',\n",
    "        'h3': '宥利',\n",
    "        'i3': '妍斗',\n",
    "        'k3': '民秀',\n",
    "        'c2': '全民秀',\n",
    "        'b2': '润慈爱',\n",
    "        'o2': '律师',\n",
    "        'y2': '人员',\n",
    "        'q2': '室长',\n",
    "        'v2': '翻译',\n",
    "        'k2': '仁浩',\n",
    "        'x2': '记者',\n",
    "        'z2': '教授'\n",
    "    },\n",
    "    '卧虎藏龙': {\n",
    "        'y2': '吴妈',\n",
    "        'b1': '俞秀莲',\n",
    "        'a1': '玉娇龙',\n",
    "        'e1': '刘泰保',\n",
    "        'g1': '蔡湘妹',\n",
    "        'r2': '蔡九',\n",
    "        'v2': '得禄',\n",
    "        'm1': '铁小贝',\n",
    "        'k1': '铁贝勒',\n",
    "        'f1': '罗小虎',\n",
    "        'n1': '李慕白',\n",
    "        'm2': '秀莲',\n",
    "        'x2': '慕白',\n",
    "        'w2': '贝勒',\n",
    "        'i1': '碧眼狐狸',\n",
    "        'c3': '丫头',\n",
    "        'n2': '慕白',\n",
    "        'j1': '高师娘',\n",
    "        'z2': '绣香',\n",
    "        't2': '师娘',\n",
    "        'p2': '小虎',\n",
    "        'c1': '李慕白',\n",
    "        'q2': '湘妹',\n",
    "        's2': '狐狸',\n",
    "        'l2': '娇龙',\n",
    "        'r1': '米大彪',\n",
    "        'q1': '鲁君雄'\n",
    "    },\n",
    "    '狗十三': {\n",
    "        'f2': '李玩',\n",
    "        'b1': '爸爸',\n",
    "        'k1': '吴老师',\n",
    "        'c1': '奶奶',\n",
    "        'e1': '爷爷',\n",
    "        'g2': '李堂',\n",
    "        'i2': '高放',\n",
    "        'l2': '摊贩',\n",
    "        'm2': '教练',\n",
    "        'j2': '昭昭',\n",
    "        'k2': '张哥',\n",
    "        'h2': '后妈'\n",
    "    },\n",
    "    '集结号': {\n",
    "        'a1': '谷子地',\n",
    "        'g1': '指导员',\n",
    "        'd1': '焦大棚',\n",
    "        'h1': '吕宽沟',\n",
    "        'i1': '姜茂财',\n",
    "        'm1': '焦大棚',\n",
    "        'f1': '王金存',\n",
    "        'q1': '姜茂才',\n",
    "        'l1': '罗广田',\n",
    "        'j1': '曹排长',\n",
    "        'c1': '赵二斗',\n",
    "        'u2': '排长',\n",
    "        'w2': '广田',\n",
    "        's2': '宽沟',\n",
    "        't2': '茂财',\n",
    "        's1': '干部甲',\n",
    "        'c3': '教员',\n",
    "        'k1': '小梁子',\n",
    "        'v2': '梁子',\n",
    "        'y2': '龚良国',\n",
    "        'q2': '金存',\n",
    "        'b3': '茂财',\n",
    "        'r1': '刘干事', \n",
    "        'e1': '孙桂琴',\n",
    "        'o1': '李参谋',\n",
    "        't1': '朱矿长',\n",
    "        'n2': '二斗',\n",
    "        'p1': '秦主任',\n",
    "        'a3': '主任',\n",
    "    },\n",
    "    '风中有朵雨做的云': {\n",
    "        'u1': '青年甲',\n",
    "        'x2': '男性',\n",
    "        'a1': '杨家栋',\n",
    "        'd1': '唐奕杰',\n",
    "        'u2': '警察',\n",
    "        'w2': '记者',\n",
    "        'v2': '秘书：',\n",
    "        'q1': '女居户',\n",
    "        'p2': '林慧',\n",
    "        's2': '小诺',\n",
    "        'e1': '姜紫成',\n",
    "        'i3': '空境',\n",
    "        't2': '阿云',\n",
    "        'm1': '电视音',\n",
    "        'n1': '工作人员',\n",
    "        'c3': '顾客',\n",
    "        'f3': '男士',\n",
    "        'y2': '侦探',\n",
    "        'o1': '播音员',\n",
    "        't1': '快递员',\n",
    "        'r1': '胡小姐',\n",
    "        'a3': '人员',\n",
    "        'y1': '唐奕杰',\n",
    "        'e3': '小姐',\n",
    "        'q2': '奕杰',\n",
    "        'r2': '紫成',\n",
    "        'o2': '家栋'\n",
    "    },\n",
    "    '唐人街探案': {\n",
    "        'l2': '秦风',\n",
    "        'k2': '唐仁',\n",
    "        'x2': '王婆',\n",
    "        'c1': '黄兰登',\n",
    "        's2': '警员',\n",
    "        'n2': '坤泰',\n",
    "        'n1': '警局大人',\n",
    "        'o2': '阿香',\n",
    "        't2': '托尼',\n",
    "        'm1': '越南仔',\n",
    "        'q2': '北哥',\n",
    "        'r2': '金刚',\n",
    "        'w2': '店员',\n",
    "        'p2': '思诺',\n",
    "        'y2': '大哥',\n",
    "        'p1': '闫先生',\n",
    "        'i1': '李',\n",
    "        'm2': '兰登',\n",
    "        'v2': '大人'\n",
    "    },\n",
    "    '寻梦环游记': {\n",
    "        'l2': '骷髅',\n",
    "        'i2': '米高',\n",
    "        'g1': '奶奶',\n",
    "        'f1': '伊美黛',\n",
    "        'n2': '苛刻',\n",
    "        'd1': '德拉库斯',\n",
    "        'o1': '父亲',\n",
    "        'i1': '工作人员',\n",
    "        'n1': '罗西塔',\n",
    "        'k1': '胡里欧',\n",
    "        'r2': '主任',\n",
    "        'p2': '保安',\n",
    "        'j2': '海特',\n",
    "        'm1': '猪皮哥',\n",
    "        'p1': '佛里'\n",
    "    },\n",
    "    '寄生虫': {\n",
    "        'a1': '金基宇',\n",
    "        'e1': '金基婷',\n",
    "        'm2': '忠淑',\n",
    "        'b1': '金基泽',\n",
    "        'u2': '老板',\n",
    "        'v2': '醉汉',\n",
    "        't2': '敏赫',\n",
    "        'o2': '雯光',\n",
    "        'c1': '朴太太',\n",
    "        'j1': '朴多慧',\n",
    "        'k1': '朴多颂',\n",
    "        'h1': '朴社长',\n",
    "        'o1': '尹司机',\n",
    "        'i1': '吴勤世',\n",
    "        'x2': '警察',\n",
    "        'y2': '医生',\n",
    "        'n2': '基婷',\n",
    "        'j2': '基宇',\n",
    "        'r2': '多慧',\n",
    "        'l2': '太太',\n",
    "        's2': '多颂',\n",
    "        'w2': '司机'\n",
    "    },\n",
    "    '霸王别姬': {\n",
    "        'u1': '大花脸',\n",
    "        'i3': '艳红',\n",
    "        's2': '班主',\n",
    "        'g1': '小石头',\n",
    "        'z2': '红卫兵',\n",
    "        'e1': '小豆子',\n",
    "        'k1': '小癞子',\n",
    "        'y2': '师父',\n",
    "        'u2': '那坤',\n",
    "        'n1': '张公公',\n",
    "        'a1': '段小楼',\n",
    "        'b1': '程蝶衣',\n",
    "        'p1': '甲',\n",
    "        'j1': '袁世卿',\n",
    "        'r1': '老鸨子',\n",
    "        'h3': '彩凤',\n",
    "        'q2': '菊仙',\n",
    "        'b3': '警察长',\n",
    "        'v2': '小四',\n",
    "        'f3': '法官',\n",
    "        's1': '红卫兵',\n",
    "        'q1': '逼问者',\n",
    "        'r2': '豆子',\n",
    "        'x2': '癞子',\n",
    "        't2': '石头',\n",
    "        'a3': '公公',\n",
    "        'p2': '蝶衣',\n",
    "        'o2': '小楼',\n",
    "        'w2': '世卿',\n",
    "        'e3': '卫兵'\n",
    "    },\n",
    "    '芳华': {\n",
    "        'o2': '刘峰',\n",
    "        'c1': '何小萍',\n",
    "        'b1': '萧穗子',\n",
    "        'h3': '队长',\n",
    "        'f1': '林丁丁',\n",
    "        'x2': '卓玛',\n",
    "        'd1': '郝淑雯',\n",
    "        'y2': '男兵',\n",
    "        'u2': '陈灿',\n",
    "        'q1': '摄像师',\n",
    "        'j1': '宁政委',\n",
    "        'b3': '朱克',\n",
    "        'e3': '何小萍',\n",
    "        'm1': '那士兵',\n",
    "        't1': '石林峰',\n",
    "        'c3': '医生',\n",
    "        's1': '何小萍',\n",
    "        'p2': '穗子',\n",
    "        'q2': '小萍',\n",
    "        's2': '丁丁',\n",
    "        'i3': '首长',\n",
    "        'w2': '政委',\n",
    "        'z2': '士兵',\n",
    "        'f3': '警察'\n",
    "    },\n",
    "    '西虹市首富': {\n",
    "        'e1': '金先生',\n",
    "        'a1': '王多鱼',\n",
    "        'o2': '教练',\n",
    "        'm2': '庄强',\n",
    "        'v2': '司机',\n",
    "        'm1': '那男子',\n",
    "        'l2': '夏竹',\n",
    "        'j1': '殷先生',\n",
    "        'h1': '赖先生',\n",
    "        'q2': '保安',\n",
    "        'i1': '服务员',\n",
    "        'q1': '经理',\n",
    "        'f1': '柳建南',\n",
    "        'r1': '巴菲特',\n",
    "        'r2': '高然',\n",
    "        'n1': '解说员',\n",
    "        'o1': '工作人员',\n",
    "        'k2': '多鱼', \n",
    "        's2': '男子', \n",
    "        'n2': '建南', \n",
    "        'y2': '真人', \n",
    "        'u2': '人员'\n",
    "    }\n",
    "}\n",
    "\n",
    "test_character_mappings = {\n",
    "    '志明与春娇': {\n",
    "        's2': '保安',\n",
    "        'm2': '警察',\n",
    "        'a1': '余春娇',\n",
    "        'o2': '小红',\n",
    "        'k2': '公公',\n",
    "        'p1': '广告客户',\n",
    "        'j1': '服务员',\n",
    "        'b1': '张志明',\n",
    "        'p2': '惠英',\n",
    "        'g1': '收银员',\n",
    "        'l2': '家豪',\n",
    "        'u2': '裴娜',\n",
    "        'k1': '那朋友',\n",
    "        'n1': '警官',\n",
    "        'm1': '同事乙',\n",
    "        'r2': '朋友',\n",
    "        'j2': '志明',\n",
    "        'i2': '春娇'\n",
    "    },\n",
    "    '楚门的世界': {\n",
    "        'a1': '杜鲁门',\n",
    "        'i1': '父亲',\n",
    "        'p2': '马隆',\n",
    "        'n1': '工作人员',\n",
    "        't2': '女人',\n",
    "        'd1': '梅丽尔',\n",
    "        'f1': '母亲',\n",
    "        'r2': '劳伦',\n",
    "        'c1': '克里斯托弗',\n",
    "        't1': '斯潘瑟',\n",
    "        'u2': '男人',\n",
    "        'r1': '主持人',\n",
    "        'x2': '护士',\n",
    "        'z2': '警察',\n",
    "        'v2': '柯克',\n",
    "        'j1': '西尔维娅',\n",
    "        'q2': '西蒙',\n",
    "        'y2': '克罗',\n",
    "        'b3': '莫斯',\n",
    "        'w2': '人员'\n",
    "    },\n",
    "    '无名之辈': {\n",
    "        'f1': '肇红霞',\n",
    "        't2': '警察',\n",
    "        'b1': '胡广生',\n",
    "        'c1': '李海根',\n",
    "        'a1': '马先勇',\n",
    "        'b3': '刘五',\n",
    "        'j1': '王顺才',\n",
    "        'd1': '马嘉旗',\n",
    "        'a3': '仁队',\n",
    "        'v2': '高明',\n",
    "        's1': '老师',\n",
    "        'h1': '马依依',\n",
    "        'z2': '高翔',\n",
    "        'c3': '保安',\n",
    "        'd3': '老黄',\n",
    "        'x2': '任队',\n",
    "        'g3': '这时',\n",
    "        'l1': '陈波波',\n",
    "        'f3': '桥下',\n",
    "        'e3': '人群', \n",
    "        'h3': '妇女', \n",
    "        'u2': '依依', \n",
    "        'r2': '嘉旗'\n",
    "    },\n",
    "    '悲伤逆流成河': {\n",
    "        'i2': '易遥',\n",
    "        'j2': '齐铭',\n",
    "        'h1': '女孩儿',\n",
    "        'e1': '唐小米',\n",
    "        'f1': '顾森湘',\n",
    "        'r2': '医生',\n",
    "        'c1': '顾森西',\n",
    "        'j1': '老师',\n",
    "        'o2': '女生',\n",
    "        'q2': '男生',\n",
    "        's2': '校长',\n",
    "        'p2': '大叔',\n",
    "        't2': '警察',\n",
    "        'n2': '孩儿', \n",
    "        'l2': '小米', \n",
    "        'm2': '森湘', \n",
    "        'k2': '森西'\n",
    "    },\n",
    "    '烈日灼心': {\n",
    "        'a1': '辛小丰',\n",
    "        'c1': '杨自道',\n",
    "        'g1': '陈比觉',\n",
    "        't2': '矮个',\n",
    "        'r2': '警察',\n",
    "        'b1': '伊谷春',\n",
    "        'm2': '尾巴',\n",
    "        'u2': '老头',\n",
    "        'q2': '嫌犯',\n",
    "        'e1': '伊谷夏',\n",
    "        'o2': '师父',\n",
    "        's2': '协警',\n",
    "        'w2': '司机',\n",
    "        'o1': '服务员',\n",
    "        'p2': '何松',\n",
    "        'v2': '务员', \n",
    "        'i2': '小丰', \n",
    "        'j2': '谷春', \n",
    "        'n2': '比觉', \n",
    "        'k2': '自道'\n",
    "    },\n",
    "    '低俗小说': {\n",
    "        'k3': '姑娘',\n",
    "        'q1': '小伙子',\n",
    "        'r3': '顾客',\n",
    "        'k1': '南瓜仔',\n",
    "        'a1': '文森特',\n",
    "        'b1': '朱尔斯',\n",
    "        'g1': '马塞勒斯',\n",
    "        'm1': '布雷特',\n",
    "        'a2': '第四者',\n",
    "        'w2': '巴奇',\n",
    "        'u1': '英国人戴维',\n",
    "        'g3': '乔迪',\n",
    "        'a3': '兰斯',\n",
    "        'x2': '米亚',\n",
    "        't3': '巴蒂',\n",
    "        'o1': '艾思玛瑞',\n",
    "        'f1': '法比恩妮',\n",
    "        'l1': '梅纳德',\n",
    "        'i3': '齐德',\n",
    "        'o3': '马文',\n",
    "        'b3': '吉米',\n",
    "        'j1': '沃尔夫',\n",
    "        's1': '温斯顿',\n",
    "        'w1': '拉奎尔',\n",
    "        't1': '小兔子',\n",
    "        'z1': '经理',\n",
    "        'x1': '约兰达',\n",
    "        'n3': '戴维',\n",
    "        'h3': '瑞达',\n",
    "        'm3': '兔子'\n",
    "    },\n",
    "    '疯狂的外星人': {\n",
    "        'o2': '扎克',\n",
    "        't2': '老板',\n",
    "        'c1': '外星人',\n",
    "        'k2': '耿浩',\n",
    "        'x2': '大哥',\n",
    "        'l2': '大飞',\n",
    "        'o1': '经理',\n",
    "        'r1': '按摩师',\n",
    "        'n2': '约翰',\n",
    "        'q2': '黑人保镖',\n",
    "        'u2': '专家',\n",
    "        'p2': '保镖',\n",
    "        'j1': '工作',\n",
    "        'w2': '主任',\n",
    "        'v2': '刘总',\n",
    "        'y2': '老廖',\n",
    "        'r2': '警察',\n",
    "        'm2': '外星人',\n",
    "        'b3': '真人'\n",
    "    },\n",
    "    '初恋这件小事': {\n",
    "        'z2': '阿亮',\n",
    "        'u1': '女生们',\n",
    "        'c2': '某女生',\n",
    "        'b3': '阿霞',\n",
    "        'y2': '小水',\n",
    "        'k1': '妈妈',\n",
    "        'g3': '小粉',\n",
    "        'h1': '好友甲',\n",
    "        'd3': '阿宁',\n",
    "        'j3': '男生',\n",
    "        'a3': '小茵',\n",
    "        'f3': '小菲',\n",
    "        'r3': '象叔',\n",
    "        's3': '阿顶',\n",
    "        'w3': '阿猫',\n",
    "        'u3': '主任',\n",
    "        't1': '三女生',\n",
    "        'h3': '阿鹏',\n",
    "        'o3': '小欧',\n",
    "        'o1': '好友们',\n",
    "        'i3': '小彬',\n",
    "        'p1': '理事长',\n",
    "        'x1': '某同学',\n",
    "        'c3': '阿拓',\n",
    "        'z3': '小梦',\n",
    "        'v3': '阿船',\n",
    "        'r1': '主持人',\n",
    "        'x3': '女生', \n",
    "        'k3': '友们', \n",
    "        't3': '同学', \n",
    "        'a2': '导', \n",
    "        'f2': '王', \n",
    "        'q3': '生们'\n",
    "    },\n",
    "    '云水谣': {\n",
    "        'f1': '孟晓芮',\n",
    "        'b1': '王碧云',\n",
    "        'a1': '陈秋水',\n",
    "        'i1': '王太太',\n",
    "        'k1': '王雨萌',\n",
    "        'e1': '孟子路',\n",
    "        'g1': '王庭武',\n",
    "        'h1': '徐凤娘',\n",
    "        't2': '莉莉',\n",
    "        'd1': '王金娣',\n",
    "        'u2': '司机',\n",
    "        'w2': '女佣',\n",
    "        'o1': '老馆员',\n",
    "        's2': '卓玛',\n",
    "        'j1': '陈昆仑',\n",
    "        'm2': '晓芮', \n",
    "        'r2': '雨萌', \n",
    "        'i2': '秋水', \n",
    "        'p2': '太太', \n",
    "        'n2': '庭武', \n",
    "        'l2': '子路', \n",
    "        'j2': '碧云', \n",
    "        'k2': '金娣'\n",
    "    },\n",
    "    '泰囧': {\n",
    "        'h2': '徐朗',\n",
    "        'k2': '安安',\n",
    "        'j2': '高博',\n",
    "        'l2': '莉莉',\n",
    "        't2': '小迪',\n",
    "        'i2': '王宝',\n",
    "        'p2': '空姐',\n",
    "        'u2': '导游',\n",
    "        'q2': '司机',\n",
    "        'h1': '前台小姐',\n",
    "        'r2': '商贩',\n",
    "        'g1': '小曼',\n",
    "        'm1': '修理工',\n",
    "        'i1': '范冰冰',\n",
    "        'm2': '外音',\n",
    "        'y2': '周扬',\n",
    "        'o2': '冰冰'\n",
    "    },\n",
    "    '追凶者也': {\n",
    "        'x2': '猫哥',\n",
    "        'i3': '司机',\n",
    "        'f3': '法医',\n",
    "        'u2': '警察',\n",
    "        'j1': '何清勇',\n",
    "        'r2': '老二',\n",
    "        'e3': '宋涛',\n",
    "        'g1': '钱贵兴',\n",
    "        'm1': '马晓兰',\n",
    "        'h3': '大爷',\n",
    "        'd3': '老板',\n",
    "        'g3': '小陈',\n",
    "        'b3': '村民',\n",
    "        'a3': '村长',\n",
    "        'c1': '王友全',\n",
    "        'j3': '勇哥',\n",
    "        'v1': '老太太',\n",
    "        'o3': '毛豆',\n",
    "        'e1': '杨淑华',\n",
    "        's2': '董小凤',\n",
    "        'y2': '小萍',\n",
    "        'k3': '凤哥',\n",
    "        'm3': '舞女',\n",
    "        'n3': '特警'\n",
    "    },\n",
    "    '中国机长': {\n",
    "        'b1': '刘长健',\n",
    "        'i3': '女儿',\n",
    "        'f1': '工作人员',\n",
    "        'v2': '毕男',\n",
    "        'w2': '梁栋',\n",
    "        'e1': '徐奕辰',\n",
    "        'r3': '主任',\n",
    "        'v1': '气象员',\n",
    "        'o1': '乘务员',\n",
    "        'f3': '杨慧',\n",
    "        'z2': '黄佳',\n",
    "        'w1': '张秋月',\n",
    "        'i1': '周雅雯',\n",
    "        'c3': '妻子',\n",
    "        'l1': '乘客们',\n",
    "        'u3': '阿姨',\n",
    "        'g3': '妇女',\n",
    "        'n3': '丈夫',\n",
    "        'r1': '藏族男',\n",
    "        'q1': '背头男',\n",
    "        's1': '白胡子老头',\n",
    "        'm3': '壮汉',\n",
    "        'y2': '人员',\n",
    "        'b3': '雅雯'\n",
    "    },\n",
    "    '暴裂无声': {\n",
    "        'p2': '丁海',\n",
    "        'r2': '村长',\n",
    "        'o2': '翠霞',\n",
    "        'w2': '校长',\n",
    "        'b1': '昌万年',\n",
    "        'c1': '徐文杰',\n",
    "        'b3': '前台',\n",
    "        'q2': '媛媛',\n",
    "        's2': '李总',\n",
    "        'n2': '金哥',\n",
    "        'u2': '警察',\n",
    "        'i1': '母亲',\n",
    "        'v2': '大厨',\n",
    "        'p1': '检察员',\n",
    "        't2': '栓子',\n",
    "        'x2': '司机',\n",
    "        'r1': '那手下',\n",
    "        'z1': '张保民', \n",
    "        'i3': '保民', \n",
    "        'z2': '妻子',\n",
    "        'a3': '手下', \n",
    "        'm2': '文杰'\n",
    "    },\n",
    "    '新喜剧之王': {\n",
    "        'l3': '大爷',\n",
    "        'n3': '司机',\n",
    "        'h3': '演员',\n",
    "        'b3': '群演',\n",
    "        'v2': '如梦',\n",
    "        'z1': '男人2',\n",
    "        'c3': '招工',\n",
    "        'y2': '李洋',\n",
    "        'x2': '查理',\n",
    "        'a3': '小米',\n",
    "        'p3': '顾客',\n",
    "        'f3': '师傅',\n",
    "        'g1': '工作人员',\n",
    "        't3': '老板',\n",
    "        'w2': '马可',\n",
    "        'm3': '大妈',\n",
    "        'e3': '盒饭',\n",
    "        'r3': '王子',\n",
    "        'j3': '苏导',\n",
    "        'o1': '陈导演',\n",
    "        'v1': '老师',\n",
    "        'o3': '保安',\n",
    "        's1': '女粉丝',\n",
    "        'z2': '人员', \n",
    "        'g3': '导演', \n",
    "        's3': '场务', \n",
    "        'd3': '助理', \n",
    "        'i3': '马可',\n",
    "        'k3': '粉丝'\n",
    "    },\n",
    "    '夏洛特烦恼': {\n",
    "        'm2': '夏洛',\n",
    "        'p2': '大春',\n",
    "        'o2': '邱雅',\n",
    "        'w2': '婉婉',\n",
    "        't2': '孟特',\n",
    "        'q2': '袁华',\n",
    "        'n2': '冬梅',\n",
    "        'f1': '王老师',\n",
    "        'r2': '张扬',\n",
    "        'y2': '新郎',\n",
    "        'a3': '贝贝',\n",
    "        'v2': '校长',\n",
    "        'c3': '王姨',\n",
    "        'b3': '小弟',\n",
    "        'u2': '陈凯',\n",
    "        'z2': '司机',\n",
    "        'd3': '那姐',\n",
    "        'x2': '护士'        \n",
    "    },\n",
    "    '扫毒': {\n",
    "        'a1': '苏建秋',\n",
    "        'r2': '警察',\n",
    "        'q2': '黑柴',\n",
    "        'b1': '马昊天',\n",
    "        'c1': '张子伟',\n",
    "        'v2': '小弟们',\n",
    "        'd3': '卡泥',\n",
    "        't1': '黄警官',\n",
    "        'g1': '八面佛',\n",
    "        't2': '波比',\n",
    "        'b3': '苏建秋',\n",
    "        'r1': '指挥官',\n",
    "        'w2': '益哥',\n",
    "        'y2': '沙立',\n",
    "        'x2': '缅娜',\n",
    "        'u2': '段坤',\n",
    "        'a3': '长官', \n",
    "        'z2': '妻子',\n",
    "        'p2': '子伟',\n",
    "        'e3': '媛媛'\n",
    "    },\n",
    "    '我不是药神': {\n",
    "        'e3': '老板',\n",
    "        'u2': '程勇',\n",
    "        'm1': '程小澍',\n",
    "        'g3': '律师',\n",
    "        'j3': '前妻',\n",
    "        'p3': '警员',\n",
    "        'w2': '曹斌',\n",
    "        'b1': '吕受益',\n",
    "        'i3': '医生',\n",
    "        'z1': '王主任',\n",
    "        'n3': '保安',\n",
    "        't1': '詹姆斯',\n",
    "        'o3': '船员',\n",
    "        'y2': '思慧',\n",
    "        'l3': '群主',\n",
    "        'i1': '刘牧师',\n",
    "        'x2': '彭浩',\n",
    "        'k3': '病友',\n",
    "        'r3': '黄队',\n",
    "        'd3': '局长',\n",
    "        'o1': '赵立忠',\n",
    "        'w1': '酒吧经理',\n",
    "        'g1': '张长林',\n",
    "        'b2': '张院士',\n",
    "        'a3': '警察',\n",
    "        'f3': '小澍',\n",
    "        'c3': '妻子'\n",
    "    },\n",
    "    '亲爱的': {\n",
    "        'w1': '快递员',\n",
    "        'm3': '小珍',\n",
    "        'a1': '田文军',\n",
    "        'c3': '男人',\n",
    "        'g3': '女人',\n",
    "        'd1': '鲁晓娟',\n",
    "        'u3': '小宇',\n",
    "        'o1': '母亲',\n",
    "        'd3': '警察',\n",
    "        'n3': '医生',\n",
    "        'i3': '房东',\n",
    "        'f1': '韩德忠',\n",
    "        'z1': '田文军',\n",
    "        'h3': '丈夫',\n",
    "        'k3': '樊芸',\n",
    "        'c1': '李红琴',\n",
    "        'o3': '村民',\n",
    "        'g1': '刘向东',\n",
    "        'b3': '吉芳',\n",
    "        'e3': '院长',\n",
    "        'y2': '高夏',\n",
    "        'r3': '前台',\n",
    "        't3': '主任',\n",
    "        'l1': '唐青山',\n",
    "        's1': '工作人员',\n",
    "        'j3': '法官',\n",
    "        'x1': '女律师',\n",
    "        'v3': '田鹏',\n",
    "        'a4': '鹏鹏',\n",
    "        'x2': '晓娟', \n",
    "        'o2': '韩德忠', \n",
    "        'i4': '吉刚', \n",
    "        'q2': '杨明富', \n",
    "        'p2': '杨吉刚', \n",
    "        'q3': '律师', \n",
    "        'l3': '人员', \n",
    "        'f3': '青山', \n",
    "        's3': '鼓掌'\n",
    "    }\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:54:24.769939Z",
     "start_time": "2021-10-10T08:54:24.411757Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>content</th>\n",
       "      <th>character</th>\n",
       "      <th>emotions</th>\n",
       "      <th>movie</th>\n",
       "      <th>scene</th>\n",
       "      <th>movie_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>14632</th>\n",
       "      <td>32812_0001_A_1</td>\n",
       "      <td>一颗卫星的摄像头对准了一望无际的太空深处。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14633</th>\n",
       "      <td>32812_0001_A_2</td>\n",
       "      <td>一颗巨大的陨石穿过碎石阵朝黑暗深处快速降落。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14634</th>\n",
       "      <td>32812_0001_A_3</td>\n",
       "      <td>一个美国主持人报道着新闻的画外音：最新消息，美国宇航局之前观测的陨石，受到撞击后改变运行轨迹，正朝地球高速飞来，专家认为，陨石撞击地球的几率非常高。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14635</th>\n",
       "      <td>32812_0001_A_4</td>\n",
       "      <td>一个B国主持人的画外音：政府已经做好了万全准备，一定尽最大努力确保大家的安全。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14636</th>\n",
       "      <td>32812_0001_A_5</td>\n",
       "      <td>更多国家主持人不同语言的声音交叉在一切，都在报道陨石事件。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14637</th>\n",
       "      <td>32812_0001_A_6</td>\n",
       "      <td>一个中国主持人的画外音：接下来我们请著名专家i1来分析一下这次的陨石事件。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14638</th>\n",
       "      <td>32812_0001_A_7</td>\n",
       "      <td>i1画外音：如果这颗陨石降落到海洋，它掀起的海啸高度可能达到一百米左右，不过呢，这种概率是很低的，我就听网友调侃说，这是外太空送来的一份外卖。</td>\n",
       "      <td>i1</td>\n",
       "      <td>0,0,0,0,0,0</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14640</th>\n",
       "      <td>32812_0002_A_8</td>\n",
       "      <td>i2在修理着一辆黑色面包车。</td>\n",
       "      <td>i2</td>\n",
       "      <td>0,0,0,0,0,0</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0002</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14639</th>\n",
       "      <td>32812_0002_A_9</td>\n",
       "      <td>h2坐在车里面听着和陨石事件有关的广播：还整出个世界末日来，光脚的不怕穿鞋的，我跟你说那陨石要是真掉下来，损失最小的就是咱们这种没钱的，让你买彩票买了吗？</td>\n",
       "      <td>h2</td>\n",
       "      <td>0,0,0,0,0,0</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0002</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14642</th>\n",
       "      <td>32812_0002_A_10</td>\n",
       "      <td>i2：买了，早买了，放k2旁白了，还是老号码。</td>\n",
       "      <td>i2</td>\n",
       "      <td>0,0,0,0,0,0</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0002</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    id  \\\n",
       "14632   32812_0001_A_1   \n",
       "14633   32812_0001_A_2   \n",
       "14634   32812_0001_A_3   \n",
       "14635   32812_0001_A_4   \n",
       "14636   32812_0001_A_5   \n",
       "14637   32812_0001_A_6   \n",
       "14638   32812_0001_A_7   \n",
       "14640   32812_0002_A_8   \n",
       "14639   32812_0002_A_9   \n",
       "14642  32812_0002_A_10   \n",
       "\n",
       "                                                                             content  \\\n",
       "14632                                                          一颗卫星的摄像头对准了一望无际的太空深处。   \n",
       "14633                                                         一颗巨大的陨石穿过碎石阵朝黑暗深处快速降落。   \n",
       "14634     一个美国主持人报道着新闻的画外音：最新消息，美国宇航局之前观测的陨石，受到撞击后改变运行轨迹，正朝地球高速飞来，专家认为，陨石撞击地球的几率非常高。   \n",
       "14635                                        一个B国主持人的画外音：政府已经做好了万全准备，一定尽最大努力确保大家的安全。   \n",
       "14636                                                  更多国家主持人不同语言的声音交叉在一切，都在报道陨石事件。   \n",
       "14637                                          一个中国主持人的画外音：接下来我们请著名专家i1来分析一下这次的陨石事件。   \n",
       "14638        i1画外音：如果这颗陨石降落到海洋，它掀起的海啸高度可能达到一百米左右，不过呢，这种概率是很低的，我就听网友调侃说，这是外太空送来的一份外卖。   \n",
       "14640                                                                 i2在修理着一辆黑色面包车。   \n",
       "14639  h2坐在车里面听着和陨石事件有关的广播：还整出个世界末日来，光脚的不怕穿鞋的，我跟你说那陨石要是真掉下来，损失最小的就是咱们这种没钱的，让你买彩票买了吗？   \n",
       "14642                                                        i2：买了，早买了，放k2旁白了，还是老号码。   \n",
       "\n",
       "      character     emotions movie scene  movie_id  \n",
       "14632       无角色               一出好戏  0001         1  \n",
       "14633       无角色               一出好戏  0001         2  \n",
       "14634       无角色               一出好戏  0001         3  \n",
       "14635       无角色               一出好戏  0001         4  \n",
       "14636       无角色               一出好戏  0001         5  \n",
       "14637       无角色               一出好戏  0001         6  \n",
       "14638        i1  0,0,0,0,0,0  一出好戏  0001         7  \n",
       "14640        i2  0,0,0,0,0,0  一出好戏  0002         8  \n",
       "14639        h2  0,0,0,0,0,0  一出好戏  0002         9  \n",
       "14642        i2  0,0,0,0,0,0  一出好戏  0002        10  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train = pd.read_csv('raw_data/train_dataset_v2.tsv', sep='\\t')\n",
    "tmp = pd.DataFrame(train['id'].str.split('_', expand=True))\n",
    "tmp.columns = ['movie', 'scene', 'A', 'movie_id']\n",
    "for col in ['movie', 'scene', 'movie_id']:\n",
    "    train[col] = tmp[col].values\n",
    "train['movie_id'] = train['movie_id'].astype(int)\n",
    "train['movie'] = train['movie'].map(movie_dict)\n",
    "train = train.sort_values(by=['movie', 'movie_id'])\n",
    "train['character'].fillna('无角色', inplace=True)\n",
    "train['emotions'].fillna('', inplace=True)\n",
    "\n",
    "# 异常文本清理下\n",
    "train['content'] = train['content'].apply(lambda x: x.replace('waitc3', 'waiter'))\n",
    "train['content'] = train['content'].apply(lambda x: x.replace('undc3stand', 'understand'))\n",
    "train['content'] = train['content'].apply(lambda x: x.replace('s0', 'OS'))\n",
    "train['content'] = train['content'].apply(lambda x: x.replace('wi11', 'will'))\n",
    "train['content'] = train['content'].apply(lambda x: x.replace('女检l3', '女监l3'))\n",
    "train['content'] = train['content'].apply(lambda x: x.replace('老r2：老猫', '龙r2：老猫'))\n",
    "train['content'] = train['content'].apply(lambda x: x.replace('M国', '美国'))\n",
    "train['content'] = train['content'].apply(lambda x: x.replace('m国', '美国'))\n",
    "\n",
    "train.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:54:24.777851Z",
     "start_time": "2021-10-10T08:54:24.773366Z"
    }
   },
   "outputs": [],
   "source": [
    "def replace_character(character, movie, datatype='train'):\n",
    "    if datatype == 'train':\n",
    "        mappings = train_character_mappings\n",
    "    else:\n",
    "        mappings = test_character_mappings\n",
    "    if movie not in mappings:\n",
    "        return character\n",
    "    if character in mappings[movie]:\n",
    "        return mappings[movie][character]\n",
    "    else:\n",
    "        return character"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:54:25.474686Z",
     "start_time": "2021-10-10T08:54:24.780271Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>content</th>\n",
       "      <th>character</th>\n",
       "      <th>emotions</th>\n",
       "      <th>movie</th>\n",
       "      <th>scene</th>\n",
       "      <th>movie_id</th>\n",
       "      <th>character_new</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>14632</th>\n",
       "      <td>32812_0001_A_1</td>\n",
       "      <td>一颗卫星的摄像头对准了一望无际的太空深处。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>1</td>\n",
       "      <td>无角色</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14633</th>\n",
       "      <td>32812_0001_A_2</td>\n",
       "      <td>一颗巨大的陨石穿过碎石阵朝黑暗深处快速降落。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>2</td>\n",
       "      <td>无角色</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14634</th>\n",
       "      <td>32812_0001_A_3</td>\n",
       "      <td>一个美国主持人报道着新闻的画外音：最新消息，美国宇航局之前观测的陨石，受到撞击后改变运行轨迹，正朝地球高速飞来，专家认为，陨石撞击地球的几率非常高。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>3</td>\n",
       "      <td>无角色</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14635</th>\n",
       "      <td>32812_0001_A_4</td>\n",
       "      <td>一个B国主持人的画外音：政府已经做好了万全准备，一定尽最大努力确保大家的安全。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>4</td>\n",
       "      <td>无角色</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14636</th>\n",
       "      <td>32812_0001_A_5</td>\n",
       "      <td>更多国家主持人不同语言的声音交叉在一切，都在报道陨石事件。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>5</td>\n",
       "      <td>无角色</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14637</th>\n",
       "      <td>32812_0001_A_6</td>\n",
       "      <td>一个中国主持人的画外音：接下来我们请著名专家i1来分析一下这次的陨石事件。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>6</td>\n",
       "      <td>无角色</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14638</th>\n",
       "      <td>32812_0001_A_7</td>\n",
       "      <td>i1画外音：如果这颗陨石降落到海洋，它掀起的海啸高度可能达到一百米左右，不过呢，这种概率是很低的，我就听网友调侃说，这是外太空送来的一份外卖。</td>\n",
       "      <td>i1</td>\n",
       "      <td>0,0,0,0,0,0</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>7</td>\n",
       "      <td>史教授</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14640</th>\n",
       "      <td>32812_0002_A_8</td>\n",
       "      <td>i2在修理着一辆黑色面包车。</td>\n",
       "      <td>i2</td>\n",
       "      <td>0,0,0,0,0,0</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0002</td>\n",
       "      <td>8</td>\n",
       "      <td>小兴</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14639</th>\n",
       "      <td>32812_0002_A_9</td>\n",
       "      <td>h2坐在车里面听着和陨石事件有关的广播：还整出个世界末日来，光脚的不怕穿鞋的，我跟你说那陨石要是真掉下来，损失最小的就是咱们这种没钱的，让你买彩票买了吗？</td>\n",
       "      <td>h2</td>\n",
       "      <td>0,0,0,0,0,0</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0002</td>\n",
       "      <td>9</td>\n",
       "      <td>马进</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14642</th>\n",
       "      <td>32812_0002_A_10</td>\n",
       "      <td>i2：买了，早买了，放k2旁白了，还是老号码。</td>\n",
       "      <td>i2</td>\n",
       "      <td>0,0,0,0,0,0</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0002</td>\n",
       "      <td>10</td>\n",
       "      <td>小兴</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    id  \\\n",
       "14632   32812_0001_A_1   \n",
       "14633   32812_0001_A_2   \n",
       "14634   32812_0001_A_3   \n",
       "14635   32812_0001_A_4   \n",
       "14636   32812_0001_A_5   \n",
       "14637   32812_0001_A_6   \n",
       "14638   32812_0001_A_7   \n",
       "14640   32812_0002_A_8   \n",
       "14639   32812_0002_A_9   \n",
       "14642  32812_0002_A_10   \n",
       "\n",
       "                                                                             content  \\\n",
       "14632                                                          一颗卫星的摄像头对准了一望无际的太空深处。   \n",
       "14633                                                         一颗巨大的陨石穿过碎石阵朝黑暗深处快速降落。   \n",
       "14634     一个美国主持人报道着新闻的画外音：最新消息，美国宇航局之前观测的陨石，受到撞击后改变运行轨迹，正朝地球高速飞来，专家认为，陨石撞击地球的几率非常高。   \n",
       "14635                                        一个B国主持人的画外音：政府已经做好了万全准备，一定尽最大努力确保大家的安全。   \n",
       "14636                                                  更多国家主持人不同语言的声音交叉在一切，都在报道陨石事件。   \n",
       "14637                                          一个中国主持人的画外音：接下来我们请著名专家i1来分析一下这次的陨石事件。   \n",
       "14638        i1画外音：如果这颗陨石降落到海洋，它掀起的海啸高度可能达到一百米左右，不过呢，这种概率是很低的，我就听网友调侃说，这是外太空送来的一份外卖。   \n",
       "14640                                                                 i2在修理着一辆黑色面包车。   \n",
       "14639  h2坐在车里面听着和陨石事件有关的广播：还整出个世界末日来，光脚的不怕穿鞋的，我跟你说那陨石要是真掉下来，损失最小的就是咱们这种没钱的，让你买彩票买了吗？   \n",
       "14642                                                        i2：买了，早买了，放k2旁白了，还是老号码。   \n",
       "\n",
       "      character     emotions movie scene  movie_id character_new  \n",
       "14632       无角色               一出好戏  0001         1           无角色  \n",
       "14633       无角色               一出好戏  0001         2           无角色  \n",
       "14634       无角色               一出好戏  0001         3           无角色  \n",
       "14635       无角色               一出好戏  0001         4           无角色  \n",
       "14636       无角色               一出好戏  0001         5           无角色  \n",
       "14637       无角色               一出好戏  0001         6           无角色  \n",
       "14638        i1  0,0,0,0,0,0  一出好戏  0001         7           史教授  \n",
       "14640        i2  0,0,0,0,0,0  一出好戏  0002         8            小兴  \n",
       "14639        h2  0,0,0,0,0,0  一出好戏  0002         9            马进  \n",
       "14642        i2  0,0,0,0,0,0  一出好戏  0002        10            小兴  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train['character_new'] = train.apply(lambda row: replace_character(row['character'], row['movie']), axis=1)\n",
    "train.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:54:25.481979Z",
     "start_time": "2021-10-10T08:54:25.476701Z"
    }
   },
   "outputs": [],
   "source": [
    "def replace_content(content, movie, datatype='train'):\n",
    "    if datatype == 'train':\n",
    "        mappings = train_character_mappings\n",
    "    else:\n",
    "        mappings = test_character_mappings\n",
    "    if movie not in mappings:\n",
    "        return content\n",
    "    text = content\n",
    "    for ch in mappings[movie]:\n",
    "        text = text.replace(ch, mappings[movie][ch])\n",
    "    return text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:54:26.376522Z",
     "start_time": "2021-10-10T08:54:25.483984Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>content</th>\n",
       "      <th>character</th>\n",
       "      <th>emotions</th>\n",
       "      <th>movie</th>\n",
       "      <th>scene</th>\n",
       "      <th>movie_id</th>\n",
       "      <th>character_new</th>\n",
       "      <th>content_new</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>14632</th>\n",
       "      <td>32812_0001_A_1</td>\n",
       "      <td>一颗卫星的摄像头对准了一望无际的太空深处。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>1</td>\n",
       "      <td>无角色</td>\n",
       "      <td>一颗卫星的摄像头对准了一望无际的太空深处。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14633</th>\n",
       "      <td>32812_0001_A_2</td>\n",
       "      <td>一颗巨大的陨石穿过碎石阵朝黑暗深处快速降落。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>2</td>\n",
       "      <td>无角色</td>\n",
       "      <td>一颗巨大的陨石穿过碎石阵朝黑暗深处快速降落。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14634</th>\n",
       "      <td>32812_0001_A_3</td>\n",
       "      <td>一个美国主持人报道着新闻的画外音：最新消息，美国宇航局之前观测的陨石，受到撞击后改变运行轨迹，正朝地球高速飞来，专家认为，陨石撞击地球的几率非常高。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>3</td>\n",
       "      <td>无角色</td>\n",
       "      <td>一个美国主持人报道着新闻的画外音：最新消息，美国宇航局之前观测的陨石，受到撞击后改变运行轨迹，正朝地球高速飞来，专家认为，陨石撞击地球的几率非常高。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14635</th>\n",
       "      <td>32812_0001_A_4</td>\n",
       "      <td>一个B国主持人的画外音：政府已经做好了万全准备，一定尽最大努力确保大家的安全。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>4</td>\n",
       "      <td>无角色</td>\n",
       "      <td>一个B国主持人的画外音：政府已经做好了万全准备，一定尽最大努力确保大家的安全。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14636</th>\n",
       "      <td>32812_0001_A_5</td>\n",
       "      <td>更多国家主持人不同语言的声音交叉在一切，都在报道陨石事件。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>5</td>\n",
       "      <td>无角色</td>\n",
       "      <td>更多国家主持人不同语言的声音交叉在一切，都在报道陨石事件。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14637</th>\n",
       "      <td>32812_0001_A_6</td>\n",
       "      <td>一个中国主持人的画外音：接下来我们请著名专家i1来分析一下这次的陨石事件。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>6</td>\n",
       "      <td>无角色</td>\n",
       "      <td>一个中国主持人的画外音：接下来我们请著名专家史教授来分析一下这次的陨石事件。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14638</th>\n",
       "      <td>32812_0001_A_7</td>\n",
       "      <td>i1画外音：如果这颗陨石降落到海洋，它掀起的海啸高度可能达到一百米左右，不过呢，这种概率是很低的，我就听网友调侃说，这是外太空送来的一份外卖。</td>\n",
       "      <td>i1</td>\n",
       "      <td>0,0,0,0,0,0</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>7</td>\n",
       "      <td>史教授</td>\n",
       "      <td>史教授画外音：如果这颗陨石降落到海洋，它掀起的海啸高度可能达到一百米左右，不过呢，这种概率是很低的，我就听网友调侃说，这是外太空送来的一份外卖。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14640</th>\n",
       "      <td>32812_0002_A_8</td>\n",
       "      <td>i2在修理着一辆黑色面包车。</td>\n",
       "      <td>i2</td>\n",
       "      <td>0,0,0,0,0,0</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0002</td>\n",
       "      <td>8</td>\n",
       "      <td>小兴</td>\n",
       "      <td>小兴在修理着一辆黑色面包车。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14639</th>\n",
       "      <td>32812_0002_A_9</td>\n",
       "      <td>h2坐在车里面听着和陨石事件有关的广播：还整出个世界末日来，光脚的不怕穿鞋的，我跟你说那陨石要是真掉下来，损失最小的就是咱们这种没钱的，让你买彩票买了吗？</td>\n",
       "      <td>h2</td>\n",
       "      <td>0,0,0,0,0,0</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0002</td>\n",
       "      <td>9</td>\n",
       "      <td>马进</td>\n",
       "      <td>马进坐在车里面听着和陨石事件有关的广播：还整出个世界末日来，光脚的不怕穿鞋的，我跟你说那陨石要是真掉下来，损失最小的就是咱们这种没钱的，让你买彩票买了吗？</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14642</th>\n",
       "      <td>32812_0002_A_10</td>\n",
       "      <td>i2：买了，早买了，放k2旁白了，还是老号码。</td>\n",
       "      <td>i2</td>\n",
       "      <td>0,0,0,0,0,0</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0002</td>\n",
       "      <td>10</td>\n",
       "      <td>小兴</td>\n",
       "      <td>小兴：买了，早买了，放姗姗旁白了，还是老号码。</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    id  \\\n",
       "14632   32812_0001_A_1   \n",
       "14633   32812_0001_A_2   \n",
       "14634   32812_0001_A_3   \n",
       "14635   32812_0001_A_4   \n",
       "14636   32812_0001_A_5   \n",
       "14637   32812_0001_A_6   \n",
       "14638   32812_0001_A_7   \n",
       "14640   32812_0002_A_8   \n",
       "14639   32812_0002_A_9   \n",
       "14642  32812_0002_A_10   \n",
       "\n",
       "                                                                             content  \\\n",
       "14632                                                          一颗卫星的摄像头对准了一望无际的太空深处。   \n",
       "14633                                                         一颗巨大的陨石穿过碎石阵朝黑暗深处快速降落。   \n",
       "14634     一个美国主持人报道着新闻的画外音：最新消息，美国宇航局之前观测的陨石，受到撞击后改变运行轨迹，正朝地球高速飞来，专家认为，陨石撞击地球的几率非常高。   \n",
       "14635                                        一个B国主持人的画外音：政府已经做好了万全准备，一定尽最大努力确保大家的安全。   \n",
       "14636                                                  更多国家主持人不同语言的声音交叉在一切，都在报道陨石事件。   \n",
       "14637                                          一个中国主持人的画外音：接下来我们请著名专家i1来分析一下这次的陨石事件。   \n",
       "14638        i1画外音：如果这颗陨石降落到海洋，它掀起的海啸高度可能达到一百米左右，不过呢，这种概率是很低的，我就听网友调侃说，这是外太空送来的一份外卖。   \n",
       "14640                                                                 i2在修理着一辆黑色面包车。   \n",
       "14639  h2坐在车里面听着和陨石事件有关的广播：还整出个世界末日来，光脚的不怕穿鞋的，我跟你说那陨石要是真掉下来，损失最小的就是咱们这种没钱的，让你买彩票买了吗？   \n",
       "14642                                                        i2：买了，早买了，放k2旁白了，还是老号码。   \n",
       "\n",
       "      character     emotions movie scene  movie_id character_new  \\\n",
       "14632       无角色               一出好戏  0001         1           无角色   \n",
       "14633       无角色               一出好戏  0001         2           无角色   \n",
       "14634       无角色               一出好戏  0001         3           无角色   \n",
       "14635       无角色               一出好戏  0001         4           无角色   \n",
       "14636       无角色               一出好戏  0001         5           无角色   \n",
       "14637       无角色               一出好戏  0001         6           无角色   \n",
       "14638        i1  0,0,0,0,0,0  一出好戏  0001         7           史教授   \n",
       "14640        i2  0,0,0,0,0,0  一出好戏  0002         8            小兴   \n",
       "14639        h2  0,0,0,0,0,0  一出好戏  0002         9            马进   \n",
       "14642        i2  0,0,0,0,0,0  一出好戏  0002        10            小兴   \n",
       "\n",
       "                                                                         content_new  \n",
       "14632                                                          一颗卫星的摄像头对准了一望无际的太空深处。  \n",
       "14633                                                         一颗巨大的陨石穿过碎石阵朝黑暗深处快速降落。  \n",
       "14634     一个美国主持人报道着新闻的画外音：最新消息，美国宇航局之前观测的陨石，受到撞击后改变运行轨迹，正朝地球高速飞来，专家认为，陨石撞击地球的几率非常高。  \n",
       "14635                                        一个B国主持人的画外音：政府已经做好了万全准备，一定尽最大努力确保大家的安全。  \n",
       "14636                                                  更多国家主持人不同语言的声音交叉在一切，都在报道陨石事件。  \n",
       "14637                                         一个中国主持人的画外音：接下来我们请著名专家史教授来分析一下这次的陨石事件。  \n",
       "14638       史教授画外音：如果这颗陨石降落到海洋，它掀起的海啸高度可能达到一百米左右，不过呢，这种概率是很低的，我就听网友调侃说，这是外太空送来的一份外卖。  \n",
       "14640                                                                 小兴在修理着一辆黑色面包车。  \n",
       "14639  马进坐在车里面听着和陨石事件有关的广播：还整出个世界末日来，光脚的不怕穿鞋的，我跟你说那陨石要是真掉下来，损失最小的就是咱们这种没钱的，让你买彩票买了吗？  \n",
       "14642                                                        小兴：买了，早买了，放姗姗旁白了，还是老号码。  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train['content_new'] = train.apply(lambda row: replace_content(row['content'], row['movie']), axis=1)\n",
    "train.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:54:26.520757Z",
     "start_time": "2021-10-10T08:54:26.378676Z"
    }
   },
   "outputs": [],
   "source": [
    "def check_(x):\n",
    "    return re.findall(r'[a-z][0-9]', x)\n",
    "\n",
    "train['not_changes'] = train['content_new'].apply(lambda x: check_(x))\n",
    "train['not_changes'] = train['not_changes'].apply(lambda x: list(set(x)))\n",
    "train['not_changes_len'] = train['not_changes'].apply(len)\n",
    "train['not_changes'] = train['not_changes'].apply(lambda x: ','.join(x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:54:26.553741Z",
     "start_time": "2021-10-10T08:54:26.523021Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "movie\n",
       "未知电影    [y2, p1, a1, b1, a1,b1, u2, f1, u2,n2, u2,a1,b1, u2,w2,a1, w2,b1, u2,a1, w2,a1, u2,a1,j2, w2, u2,a1,n2, p2, a1,b1,n2,p2, n2,p2, a1,b1,n2, w2,n2,b1, b1,p2, a1,p2, a1,b1,p2, w2,a1,n2, f1,b1,u2,w2,n2, n2,b1, a1,n2, n2,f1,l2, a1,f1, l2, n2,l2, a1,l2, t2,a1, t2,f1, t2,a1,y2, t2, t2,n2, i1,a1,v2,p2, i1, t2,v2, g1,b1,p2, n2,g1, a1,f1,b1,n2, t2,a1,n2, f1,i1,l2,a1,g1, f1,l2, a1,l2,n2, i1,v2,g1, a1,l2,p...\n",
       "Name: not_changes, dtype: object"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tmp = train[train['not_changes_len'] > 0].copy()\n",
    "tmp.groupby('movie')['not_changes'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:54:26.665043Z",
     "start_time": "2021-10-10T08:54:26.557120Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>content</th>\n",
       "      <th>character</th>\n",
       "      <th>movie</th>\n",
       "      <th>scene</th>\n",
       "      <th>movie_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34170_0002_A_12</td>\n",
       "      <td>穿着背心的b1醒来，看看手机，三点了。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0002</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34170_0002_A_14</td>\n",
       "      <td>b1走出卧室。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0002</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34170_0003_A_16</td>\n",
       "      <td>b1拿着手机，点开计时功能。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34170_0003_A_17</td>\n",
       "      <td>b1站在淋浴头下面，水从b1的头和脸上冲刷而过。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>34170_0003_A_18</td>\n",
       "      <td>b1摈着呼吸。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>34170_0003_A_20</td>\n",
       "      <td>b1睁开了眼，喘了口气。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>34170_0003_A_21</td>\n",
       "      <td>b1看了看手机，大概四分钟。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>34170_0004_A_24</td>\n",
       "      <td>i3躺在被窝里熟睡。</td>\n",
       "      <td>i3</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0004</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>34170_0004_A_25</td>\n",
       "      <td>b1蹲在床边，拉着i3的手，轻声说道：满儿，爸爸今晚下班以后回来给你过生日。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0004</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>34170_0004_A_26</td>\n",
       "      <td>b1蹲在床边，拉着i3的手，轻声说道：满儿，爸爸今晚下班以后回来给你过生日。</td>\n",
       "      <td>i3</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0004</td>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                id                                 content character movie  \\\n",
       "0  34170_0002_A_12                     穿着背心的b1醒来，看看手机，三点了。        b1  中国机长   \n",
       "1  34170_0002_A_14                                 b1走出卧室。        b1  中国机长   \n",
       "2  34170_0003_A_16                          b1拿着手机，点开计时功能。        b1  中国机长   \n",
       "3  34170_0003_A_17                b1站在淋浴头下面，水从b1的头和脸上冲刷而过。        b1  中国机长   \n",
       "4  34170_0003_A_18                                 b1摈着呼吸。        b1  中国机长   \n",
       "5  34170_0003_A_20                            b1睁开了眼，喘了口气。        b1  中国机长   \n",
       "6  34170_0003_A_21                          b1看了看手机，大概四分钟。        b1  中国机长   \n",
       "7  34170_0004_A_24                              i3躺在被窝里熟睡。        i3  中国机长   \n",
       "8  34170_0004_A_25  b1蹲在床边，拉着i3的手，轻声说道：满儿，爸爸今晚下班以后回来给你过生日。        b1  中国机长   \n",
       "9  34170_0004_A_26  b1蹲在床边，拉着i3的手，轻声说道：满儿，爸爸今晚下班以后回来给你过生日。        i3  中国机长   \n",
       "\n",
       "  scene  movie_id  \n",
       "0  0002        12  \n",
       "1  0002        14  \n",
       "2  0003        16  \n",
       "3  0003        17  \n",
       "4  0003        18  \n",
       "5  0003        20  \n",
       "6  0003        21  \n",
       "7  0004        24  \n",
       "8  0004        25  \n",
       "9  0004        26  "
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test = pd.read_csv('raw_data/test_dataset.tsv', sep='\\t')\n",
    "tmp = pd.DataFrame(test['id'].str.split('_', expand=True))\n",
    "tmp.columns = ['movie', 'scene', 'A', 'movie_id']\n",
    "for col in ['movie', 'scene', 'movie_id']:\n",
    "    test[col] = tmp[col].values\n",
    "test['movie_id'] = test['movie_id'].astype(int)\n",
    "test['movie'] = test['movie'].map(movie_dict)\n",
    "test = test.sort_values(by=['movie', 'movie_id'])\n",
    "test['character'].fillna('无角色', inplace=True)\n",
    "\n",
    "test['content'] = test['content'].apply(lambda x: x.replace('M国', '美国'))\n",
    "test['content'] = test['content'].apply(lambda x: x.replace('m国', '美国'))\n",
    "\n",
    "test.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:54:27.030526Z",
     "start_time": "2021-10-10T08:54:26.667141Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>content</th>\n",
       "      <th>character</th>\n",
       "      <th>movie</th>\n",
       "      <th>scene</th>\n",
       "      <th>movie_id</th>\n",
       "      <th>character_new</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34170_0002_A_12</td>\n",
       "      <td>穿着背心的b1醒来，看看手机，三点了。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0002</td>\n",
       "      <td>12</td>\n",
       "      <td>刘长健</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34170_0002_A_14</td>\n",
       "      <td>b1走出卧室。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0002</td>\n",
       "      <td>14</td>\n",
       "      <td>刘长健</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34170_0003_A_16</td>\n",
       "      <td>b1拿着手机，点开计时功能。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>16</td>\n",
       "      <td>刘长健</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34170_0003_A_17</td>\n",
       "      <td>b1站在淋浴头下面，水从b1的头和脸上冲刷而过。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>17</td>\n",
       "      <td>刘长健</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>34170_0003_A_18</td>\n",
       "      <td>b1摈着呼吸。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>18</td>\n",
       "      <td>刘长健</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>34170_0003_A_20</td>\n",
       "      <td>b1睁开了眼，喘了口气。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>20</td>\n",
       "      <td>刘长健</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>34170_0003_A_21</td>\n",
       "      <td>b1看了看手机，大概四分钟。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>21</td>\n",
       "      <td>刘长健</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>34170_0004_A_24</td>\n",
       "      <td>i3躺在被窝里熟睡。</td>\n",
       "      <td>i3</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0004</td>\n",
       "      <td>24</td>\n",
       "      <td>女儿</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>34170_0004_A_25</td>\n",
       "      <td>b1蹲在床边，拉着i3的手，轻声说道：满儿，爸爸今晚下班以后回来给你过生日。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0004</td>\n",
       "      <td>25</td>\n",
       "      <td>刘长健</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>34170_0004_A_26</td>\n",
       "      <td>b1蹲在床边，拉着i3的手，轻声说道：满儿，爸爸今晚下班以后回来给你过生日。</td>\n",
       "      <td>i3</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0004</td>\n",
       "      <td>26</td>\n",
       "      <td>女儿</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                id                                 content character movie  \\\n",
       "0  34170_0002_A_12                     穿着背心的b1醒来，看看手机，三点了。        b1  中国机长   \n",
       "1  34170_0002_A_14                                 b1走出卧室。        b1  中国机长   \n",
       "2  34170_0003_A_16                          b1拿着手机，点开计时功能。        b1  中国机长   \n",
       "3  34170_0003_A_17                b1站在淋浴头下面，水从b1的头和脸上冲刷而过。        b1  中国机长   \n",
       "4  34170_0003_A_18                                 b1摈着呼吸。        b1  中国机长   \n",
       "5  34170_0003_A_20                            b1睁开了眼，喘了口气。        b1  中国机长   \n",
       "6  34170_0003_A_21                          b1看了看手机，大概四分钟。        b1  中国机长   \n",
       "7  34170_0004_A_24                              i3躺在被窝里熟睡。        i3  中国机长   \n",
       "8  34170_0004_A_25  b1蹲在床边，拉着i3的手，轻声说道：满儿，爸爸今晚下班以后回来给你过生日。        b1  中国机长   \n",
       "9  34170_0004_A_26  b1蹲在床边，拉着i3的手，轻声说道：满儿，爸爸今晚下班以后回来给你过生日。        i3  中国机长   \n",
       "\n",
       "  scene  movie_id character_new  \n",
       "0  0002        12           刘长健  \n",
       "1  0002        14           刘长健  \n",
       "2  0003        16           刘长健  \n",
       "3  0003        17           刘长健  \n",
       "4  0003        18           刘长健  \n",
       "5  0003        20           刘长健  \n",
       "6  0003        21           刘长健  \n",
       "7  0004        24            女儿  \n",
       "8  0004        25           刘长健  \n",
       "9  0004        26            女儿  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test['character_new'] = test.apply(lambda row: replace_character(row['character'], row['movie'], datatype='test'), axis=1)\n",
    "test.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:54:27.484257Z",
     "start_time": "2021-10-10T08:54:27.032244Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>content</th>\n",
       "      <th>character</th>\n",
       "      <th>movie</th>\n",
       "      <th>scene</th>\n",
       "      <th>movie_id</th>\n",
       "      <th>character_new</th>\n",
       "      <th>content_new</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34170_0002_A_12</td>\n",
       "      <td>穿着背心的b1醒来，看看手机，三点了。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0002</td>\n",
       "      <td>12</td>\n",
       "      <td>刘长健</td>\n",
       "      <td>穿着背心的刘长健醒来，看看手机，三点了。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34170_0002_A_14</td>\n",
       "      <td>b1走出卧室。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0002</td>\n",
       "      <td>14</td>\n",
       "      <td>刘长健</td>\n",
       "      <td>刘长健走出卧室。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34170_0003_A_16</td>\n",
       "      <td>b1拿着手机，点开计时功能。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>16</td>\n",
       "      <td>刘长健</td>\n",
       "      <td>刘长健拿着手机，点开计时功能。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34170_0003_A_17</td>\n",
       "      <td>b1站在淋浴头下面，水从b1的头和脸上冲刷而过。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>17</td>\n",
       "      <td>刘长健</td>\n",
       "      <td>刘长健站在淋浴头下面，水从刘长健的头和脸上冲刷而过。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>34170_0003_A_18</td>\n",
       "      <td>b1摈着呼吸。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>18</td>\n",
       "      <td>刘长健</td>\n",
       "      <td>刘长健摈着呼吸。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>34170_0003_A_20</td>\n",
       "      <td>b1睁开了眼，喘了口气。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>20</td>\n",
       "      <td>刘长健</td>\n",
       "      <td>刘长健睁开了眼，喘了口气。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>34170_0003_A_21</td>\n",
       "      <td>b1看了看手机，大概四分钟。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>21</td>\n",
       "      <td>刘长健</td>\n",
       "      <td>刘长健看了看手机，大概四分钟。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>34170_0004_A_24</td>\n",
       "      <td>i3躺在被窝里熟睡。</td>\n",
       "      <td>i3</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0004</td>\n",
       "      <td>24</td>\n",
       "      <td>女儿</td>\n",
       "      <td>女儿躺在被窝里熟睡。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>34170_0004_A_25</td>\n",
       "      <td>b1蹲在床边，拉着i3的手，轻声说道：满儿，爸爸今晚下班以后回来给你过生日。</td>\n",
       "      <td>b1</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0004</td>\n",
       "      <td>25</td>\n",
       "      <td>刘长健</td>\n",
       "      <td>刘长健蹲在床边，拉着女儿的手，轻声说道：满儿，爸爸今晚下班以后回来给你过生日。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>34170_0004_A_26</td>\n",
       "      <td>b1蹲在床边，拉着i3的手，轻声说道：满儿，爸爸今晚下班以后回来给你过生日。</td>\n",
       "      <td>i3</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0004</td>\n",
       "      <td>26</td>\n",
       "      <td>女儿</td>\n",
       "      <td>刘长健蹲在床边，拉着女儿的手，轻声说道：满儿，爸爸今晚下班以后回来给你过生日。</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                id                                 content character movie  \\\n",
       "0  34170_0002_A_12                     穿着背心的b1醒来，看看手机，三点了。        b1  中国机长   \n",
       "1  34170_0002_A_14                                 b1走出卧室。        b1  中国机长   \n",
       "2  34170_0003_A_16                          b1拿着手机，点开计时功能。        b1  中国机长   \n",
       "3  34170_0003_A_17                b1站在淋浴头下面，水从b1的头和脸上冲刷而过。        b1  中国机长   \n",
       "4  34170_0003_A_18                                 b1摈着呼吸。        b1  中国机长   \n",
       "5  34170_0003_A_20                            b1睁开了眼，喘了口气。        b1  中国机长   \n",
       "6  34170_0003_A_21                          b1看了看手机，大概四分钟。        b1  中国机长   \n",
       "7  34170_0004_A_24                              i3躺在被窝里熟睡。        i3  中国机长   \n",
       "8  34170_0004_A_25  b1蹲在床边，拉着i3的手，轻声说道：满儿，爸爸今晚下班以后回来给你过生日。        b1  中国机长   \n",
       "9  34170_0004_A_26  b1蹲在床边，拉着i3的手，轻声说道：满儿，爸爸今晚下班以后回来给你过生日。        i3  中国机长   \n",
       "\n",
       "  scene  movie_id character_new                              content_new  \n",
       "0  0002        12           刘长健                     穿着背心的刘长健醒来，看看手机，三点了。  \n",
       "1  0002        14           刘长健                                 刘长健走出卧室。  \n",
       "2  0003        16           刘长健                          刘长健拿着手机，点开计时功能。  \n",
       "3  0003        17           刘长健               刘长健站在淋浴头下面，水从刘长健的头和脸上冲刷而过。  \n",
       "4  0003        18           刘长健                                 刘长健摈着呼吸。  \n",
       "5  0003        20           刘长健                            刘长健睁开了眼，喘了口气。  \n",
       "6  0003        21           刘长健                          刘长健看了看手机，大概四分钟。  \n",
       "7  0004        24            女儿                               女儿躺在被窝里熟睡。  \n",
       "8  0004        25           刘长健  刘长健蹲在床边，拉着女儿的手，轻声说道：满儿，爸爸今晚下班以后回来给你过生日。  \n",
       "9  0004        26            女儿  刘长健蹲在床边，拉着女儿的手，轻声说道：满儿，爸爸今晚下班以后回来给你过生日。  "
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test['content_new'] = test.apply(lambda row: replace_content(row['content'], row['movie'], datatype='test'), axis=1)\n",
    "test.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:54:27.575373Z",
     "start_time": "2021-10-10T08:54:27.486006Z"
    }
   },
   "outputs": [],
   "source": [
    "test['not_changes'] = test['content_new'].apply(lambda x: check_(x))\n",
    "test['not_changes'] = test['not_changes'].apply(lambda x: list(set(x)))\n",
    "test['not_changes_len'] = test['not_changes'].apply(len)\n",
    "test['not_changes'] = test['not_changes'].apply(lambda x: ','.join(x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:54:27.590128Z",
     "start_time": "2021-10-10T08:54:27.577204Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Series([], Name: not_changes, dtype: float64)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tmp = test[test['not_changes_len'] > 0].copy()\n",
    "tmp.groupby('movie')['not_changes'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:58:30.566369Z",
     "start_time": "2021-10-10T08:58:30.532661Z"
    }
   },
   "outputs": [],
   "source": [
    "train_df = train[['id', 'movie_id', 'movie', 'scene', 'content_new', 'character_new', 'emotions']].copy()\n",
    "test_df = test[['id', 'movie_id', 'movie', 'scene', 'content_new', 'character_new']].copy()\n",
    "\n",
    "train_df = train_df.rename(columns={'content_new': 'content', 'character_new': 'character'})\n",
    "test_df = test_df.rename(columns={'content_new': 'content', 'character_new': 'character'})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:58:38.428211Z",
     "start_time": "2021-10-10T08:58:38.409866Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>movie_id</th>\n",
       "      <th>movie</th>\n",
       "      <th>scene</th>\n",
       "      <th>content</th>\n",
       "      <th>character</th>\n",
       "      <th>emotions</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>14632</th>\n",
       "      <td>32812_0001_A_1</td>\n",
       "      <td>1</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>一颗卫星的摄像头对准了一望无际的太空深处。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14633</th>\n",
       "      <td>32812_0001_A_2</td>\n",
       "      <td>2</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>一颗巨大的陨石穿过碎石阵朝黑暗深处快速降落。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14634</th>\n",
       "      <td>32812_0001_A_3</td>\n",
       "      <td>3</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>一个美国主持人报道着新闻的画外音：最新消息，美国宇航局之前观测的陨石，受到撞击后改变运行轨迹，正朝地球高速飞来，专家认为，陨石撞击地球的几率非常高。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14635</th>\n",
       "      <td>32812_0001_A_4</td>\n",
       "      <td>4</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>一个B国主持人的画外音：政府已经做好了万全准备，一定尽最大努力确保大家的安全。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14636</th>\n",
       "      <td>32812_0001_A_5</td>\n",
       "      <td>5</td>\n",
       "      <td>一出好戏</td>\n",
       "      <td>0001</td>\n",
       "      <td>更多国家主持人不同语言的声音交叉在一切，都在报道陨石事件。</td>\n",
       "      <td>无角色</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   id  movie_id movie scene  \\\n",
       "14632  32812_0001_A_1         1  一出好戏  0001   \n",
       "14633  32812_0001_A_2         2  一出好戏  0001   \n",
       "14634  32812_0001_A_3         3  一出好戏  0001   \n",
       "14635  32812_0001_A_4         4  一出好戏  0001   \n",
       "14636  32812_0001_A_5         5  一出好戏  0001   \n",
       "\n",
       "                                                                          content  \\\n",
       "14632                                                       一颗卫星的摄像头对准了一望无际的太空深处。   \n",
       "14633                                                      一颗巨大的陨石穿过碎石阵朝黑暗深处快速降落。   \n",
       "14634  一个美国主持人报道着新闻的画外音：最新消息，美国宇航局之前观测的陨石，受到撞击后改变运行轨迹，正朝地球高速飞来，专家认为，陨石撞击地球的几率非常高。   \n",
       "14635                                     一个B国主持人的画外音：政府已经做好了万全准备，一定尽最大努力确保大家的安全。   \n",
       "14636                                               更多国家主持人不同语言的声音交叉在一切，都在报道陨石事件。   \n",
       "\n",
       "      character emotions  \n",
       "14632       无角色           \n",
       "14633       无角色           \n",
       "14634       无角色           \n",
       "14635       无角色           \n",
       "14636       无角色           "
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:58:44.845450Z",
     "start_time": "2021-10-10T08:58:44.825732Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>movie_id</th>\n",
       "      <th>movie</th>\n",
       "      <th>scene</th>\n",
       "      <th>content</th>\n",
       "      <th>character</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34170_0002_A_12</td>\n",
       "      <td>12</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0002</td>\n",
       "      <td>穿着背心的刘长健醒来，看看手机，三点了。</td>\n",
       "      <td>刘长健</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>34170_0002_A_14</td>\n",
       "      <td>14</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0002</td>\n",
       "      <td>刘长健走出卧室。</td>\n",
       "      <td>刘长健</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34170_0003_A_16</td>\n",
       "      <td>16</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>刘长健拿着手机，点开计时功能。</td>\n",
       "      <td>刘长健</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>34170_0003_A_17</td>\n",
       "      <td>17</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>刘长健站在淋浴头下面，水从刘长健的头和脸上冲刷而过。</td>\n",
       "      <td>刘长健</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>34170_0003_A_18</td>\n",
       "      <td>18</td>\n",
       "      <td>中国机长</td>\n",
       "      <td>0003</td>\n",
       "      <td>刘长健摈着呼吸。</td>\n",
       "      <td>刘长健</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                id  movie_id movie scene                     content character\n",
       "0  34170_0002_A_12        12  中国机长  0002        穿着背心的刘长健醒来，看看手机，三点了。       刘长健\n",
       "1  34170_0002_A_14        14  中国机长  0002                    刘长健走出卧室。       刘长健\n",
       "2  34170_0003_A_16        16  中国机长  0003             刘长健拿着手机，点开计时功能。       刘长健\n",
       "3  34170_0003_A_17        17  中国机长  0003  刘长健站在淋浴头下面，水从刘长健的头和脸上冲刷而过。       刘长健\n",
       "4  34170_0003_A_18        18  中国机长  0003                    刘长健摈着呼吸。       刘长健"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:59:08.413340Z",
     "start_time": "2021-10-10T08:59:08.404328Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(42790, 7) (42790, 11)\n",
      "(21376, 6) (21376, 10)\n"
     ]
    }
   ],
   "source": [
    "print(train_df.shape, train.shape)\n",
    "print(test_df.shape, test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-10-10T08:59:59.228881Z",
     "start_time": "2021-10-10T08:59:58.972000Z"
    }
   },
   "outputs": [],
   "source": [
    "train_df.to_csv('train_fixed.csv', index=False)\n",
    "test_df.to_csv('test_fixed.csv', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
